package com.tinet.reservas;

import java.io.Serializable;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import com.tinet.reservas.bean.SalaBean;
import com.tinet.reservas.model.Sala;
/**
 * 
 * Managed bean de sala. Se encarga de las operaciones que involucren a las
 * salas
 * 
 * @author tinet
 */
@ManagedBean
@SessionScoped
public class ManBeanSala implements Serializable {

    /**
     * @param serialVersionUID
     */
    private static final long serialVersionUID = 1L;
    /**
     * @EJB mapea el beans de sala
     */
    @EJB(mappedName = "salabean", name = "salabean")
    private transient SalaBean bean;
    /**
     * @param sala
     * 
     */
    private Sala sala;
    /**
     * 
     * @method ManBeanReserva constructor de managed bean de sala
     * 
     */
    public ManBeanSala() {
        if (sala == null) {
            this.sala = new Sala();
        }
    }
    /**
     * 
     * @method getSala
     * @return sala
     * 
     */
    public Sala getSala() {
        return sala;
    }



    /**
     * 
     * @method setSala
     * @param sala .
     * 
     */
    public void setSala(Sala sala) {
        this.sala = sala;
    }

    /**
     * 
     * @method mostrarTodos
     * @return lista de todas las salas .
     * 
     */
    public List<Sala> mostrarTodos() {
        return bean.mostrarTodo();
    }

    /**
     * 
     * @method Metodo que me trae una sala para poder mostrarla en pop-up
     *  de mostrarSalas.jsf y asi poder crear una reserva.
     *
     * @param sala .
     */
    public void mostrarSalaParaReserva(Sala sala){
        this.sala = bean.mostrarSala(sala);
        org.primefaces.context.RequestContext.getCurrentInstance().update(
                "formReservar:reservarSala");
        org.primefaces.context.RequestContext.getCurrentInstance().execute(
                "PF('dialogoReservarSala').show()");
    }
    /**
     * 
     * @method mostrarsala muestra una sala para editarla
     * @param sala .
     * 
     */
    public void mostrarSala(Sala sala){
        this.sala = bean.mostrarSala(sala);
        org.primefaces.context.RequestContext.getCurrentInstance().update(
                "formEditar:editarSala");
        org.primefaces.context.RequestContext.getCurrentInstance().execute(
                "PF('dialogoEditarSala').show()");
    }


    /**
     * 
     * @method agregarSala
     * @return pagina mostrarSalas .
     * 
     */
    public String agregarSala() {
        FacesContext context = FacesContext.getCurrentInstance();
        bean.insertar(this.sala);
        context.addMessage(null, new FacesMessage("Mensaje: "
        + "Sala agregada con exito"));
        return "agregarSala";
    }
    /**
     * 
     * @method eliminarSala
     * @param sala .
     * @return pagina mostrarSalas
     */
    public String eliminarSala(Sala sala) {
        FacesContext context = FacesContext.getCurrentInstance();
        bean.eliminar(sala);
        context.addMessage(null, new FacesMessage("Mensaje: "
        + "Sala eliminada con exito"));
        return "mostrarSalas";
    }
    /**
     * 
     * @method editarSala
     * @return pagina mostrarSalas .
     * @param sala .
     */
    public String editarSala(Sala sala) {
        FacesContext context = FacesContext.getCurrentInstance();
        bean.editar(sala);
        context.addMessage(null, new FacesMessage("Mensaje: Sala "
        + sala.getId() + " editada con exito! "));
        return "mostrarSalas";
    }

}

